/**
 * @name 程序入口文件
 * @author 杨标
 * @version 2.0
 * @requires express
 * @description 实现const的批量定义方式   加了session要实现登陆验证
 */
const express=require("express"),
    http=require("http"),
    template=require("express-art-template"),
    path=require("path"),
    menuConfig=require("./config/menuConfig"),
    bodyParser=require("body-parser"),
    session=require("express-session");

//导入路由文件
const Stu_h1802Router=require("./routers/Stu_h1802Router");

let app=express();

//加载了session中间插件
//总结一下：app.use()有那些操作
app.use(session({
    secret:"aasdfasdf",
    saveUninitialized:false,
    resave:true                     //是否可以更改里面的值
}));


app.engine("html",template);
app.set("views",path.join(__dirname,"./views"));
app.set("view engine","html");
app.use("/public",express.static(path.join(__dirname,"./public")));
//加载POST取值插件 bodyParser
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());


//添加一个拦截器
app.use((req,resp,next)=>{
    //所有的请求都会经过这个拦截器
    // console.log("经过拦截器了"+new Date().toLocaleString());   
    //判断一下它有没有登陆，如果没有登陆，我就不放行，如果登陆了，我就放行
    if(req.session.stuInfo!=undefined){
        next();    //拦截器放行，继续往后面走
    }
    else{
        if(req.path=="/Stu_h1802/login"||req.path=="/Stu_h1802/checkLogin"){
            //说明，你本来就是要去登陆的，放行
            next();
        }
        else{
            //没有登陆的，就跳转到登陆页去登陆
            resp.redirect("/Stu_h1802/login");    
        }
    }
});


//加载路由
app.use("/Stu_h1802",Stu_h1802Router);    



app.get("/adminIndex",(req,resp)=>{
    let stuInfo=req.session.stuInfo;    //从“保险箱”里面，拿出刚刚登陆的时候，存入进去的东西
    resp.render("admin/adminIndex",{menuConfig:menuConfig,stuInfo:stuInfo});
});


app.get("/",(req,resp)=>{
    resp.redirect("/Stu_h1802/login");     //直接跳转到登陆页
});


let server=http.createServer(app);
//启动监听
server.listen(8888,()=>{
    console.log("-------------------------------------------");
    console.log("服务器启动成功");
    //如果这里看到了结果，就认为是服务器启动成功了
    console.log("-------------------------------------------");
});